package com.night.icm.service.business.service;

import com.night.icm.common.utils.PageDataDTO;
import com.night.icm.model.business.ConsolidatedResultsDTO;
import com.night.icm.model.business.DataSeriesDTO;

import java.util.List;

/**
 * StatisticalAnalysisService
 *
 * @author Liao ZhiYong
 * @date 2020/4/1
 */
public interface StatisticalAnalysisService {

    /**
     * 分页查找学生综合成绩列表
     *
     * @param page         页号，从0开始
     * @param size         每页记录条数
     * @param sort         排序字段，例如：字段1,asc,字段2,desc
     * @param academyId    学院名称
     * @param professionId 专业名称
     * @param classId      班级名称
     * @param studentName  学生姓名
     * @param year         测评年份
     * @return 学生综合成绩列表
     */
    PageDataDTO<ConsolidatedResultsDTO> findOnePage(int page, int size, String sort, String academyId, String professionId, String classId, String studentName, String year);

    /**
     * 统计与分析学生综合成绩情况
     *
     * @param academyId        学院名称
     * @param professionId     专业名称
     * @param classId          班级名称
     * @param year             测评年份
     * @param standard         达标分数
     * @param notStandard      未达标分数
     * @param earlyWarningDown 预警下限
     * @param earlyWarningUp   预警上限
     * @return 学生综合成绩情况
     */
    List<DataSeriesDTO> analysisConsolidatedResults(String academyId, String professionId, String classId, String year, Double standard, Double notStandard, Double earlyWarningDown, Double earlyWarningUp);

    /**
     * 统计与分析毕业学分修读情况
     *
     * @param academyId        学院名称
     * @param professionId     专业名称
     * @param classId          班级名称
     * @param grade            所属年级
     * @param standard         达标分数
     * @param notStandard      未达标分数
     * @param earlyWarningDown 预警下限
     * @param earlyWarningUp   预警上限
     * @return 毕业学分修读情况
     */
    List<DataSeriesDTO> analysisGraduationCredits(String academyId, String professionId, String classId, String grade, Double standard, Double notStandard, Double earlyWarningDown, Double earlyWarningUp);
}
